using System.ComponentModel.DataAnnotations;
using System.Data.Entity.ModelConfiguration;
using Planisoft.Entities;

namespace Planisoft.DAO.Mapping
{
    public class ConfiguraTrabajadorMap : EntityTypeConfiguration<ConfiguraTrabajador>
    {
        public ConfiguraTrabajadorMap()
        {
            // Primary Key
            //this.HasKey(t => new { t.RegLaboral, t.Discapacidad, t.SctrSalud, t.SctrPension, t.TipoJornada, t.InfQuinta, t.SituaEsp, t.TipoPago, t.Sindicalizado });
            this.HasKey(t => new { t.IdConfigura });
            // Properties
            this.Property(t => t.SctrSalud)
                .IsRequired()
                .HasMaxLength(1);

            this.Property(t => t.SctrPension)
                .IsRequired()
                .HasMaxLength(1);

            this.Property(t => t.TipoJornada)
                .IsRequired()
                .HasMaxLength(1);

            this.Property(t => t.SituaEsp)
                .IsRequired()
                .HasMaxLength(1);

            this.Property(t => t.TipoPago)
                .IsRequired()
                .HasMaxLength(1);

            // Table & Column Mappings
            this.ToTable("ConfiguraTrabajador");
            this.Property(t => t.IdTrabajador).HasColumnName("IdTrabajador");
            this.Property(t => t.IdTipoTrabajPension).HasColumnName("IdTipoTrabajPension");
            this.Property(t => t.IdEps).HasColumnName("IdEps");
            this.Property(t => t.RegLaboral).HasColumnName("RegLaboral");
            this.Property(t => t.Discapacidad).HasColumnName("Discapacidad");
            this.Property(t => t.SctrSalud).HasColumnName("SctrSalud");
            this.Property(t => t.SctrPension).HasColumnName("SctrPension");
            this.Property(t => t.IndEps).HasColumnName("IndEps");
            this.Property(t => t.TipoJornada).HasColumnName("TipoJornada");
            this.Property(t => t.InfQuinta).HasColumnName("InfQuinta");
            this.Property(t => t.SituaEsp).HasColumnName("SituaEsp");
            this.Property(t => t.TipoPago).HasColumnName("TipoPago");
            this.Property(t => t.Sindicalizado).HasColumnName("Sindicalizado");
            this.Property(t => t.IdRegPensionario).HasColumnName("IdRegPensionario");

            // Relationships
            this.HasOptional(t => t.Trabajador)
                .WithMany(t => t.ConfiguraTrabajadors)
                .HasForeignKey(d => d.IdTrabajador);
            this.HasOptional(t => t.TipoTrabajadorPensionista)
                .WithMany(t => t.ConfiguraTrabajadors)
                .HasForeignKey(d => d.IdTipoTrabajPension);
            this.HasOptional(t => t.EpsServiciosPropio)
                .WithMany(t => t.ConfiguraTrabajadors)
                .HasForeignKey(d => d.IdEps);
            this.HasOptional(t => t.RegimenPensionario)
                .WithMany(t => t.ConfiguraTrabajadors)
                .HasForeignKey(d => d.IdRegPensionario);

        }
    }
}
